## pval_cutoff: 0.05
## lfc_cutoff: 0.58
## low_counts_cutoff: 10
General statistics
# Number of samples
length(counts_data)
## [1] 6
# Number of genes
nrow(counts_data)
## [1] 43432
# Total counts
colSums(counts_data)
## SRR13535276 SRR13535278 SRR13535280 SRR13535288 SRR13535290 SRR13535292
## 7431251 7870063 9246891 15630374 14343946 7279161

Create DDS objects
# Create DESeqDataSet object
dds <- get_DESeqDataSet_obj(counts_data, ~ experimental_class_type)
## [1] TRUE
## [1] TRUE
## [1] "DESeqDataSet object of length 43432 with 0 metadata columns"
## [1] "DESeqDataSet object of length 14329 with 0 metadata columns"
colData(dds)
## DataFrame with 6 rows and 3 columns
## experimental_class_type regime treatment
## <factor> <factor> <character>
## SRR13535276 A in space without gravity without nanoceria
## SRR13535278 A in space without gravity without nanoceria
## SRR13535280 A in space without gravity without nanoceria
## SRR13535288 C in space with gravity without nanoceria
## SRR13535290 C in space with gravity without nanoceria
## SRR13535292 C in space with gravity without nanoceria
Sample-to-sample comparisons
# Transform data (blinded rlog)
rld <- get_transformed_data(dds)
PCA plot
pca <- rld$pca
pca_df <- cbind(as.data.frame(colData(dds)) %>% rownames_to_column(var = 'name'), pca$x)
summary(pca)
## Importance of components:
## PC1 PC2 PC3 PC4 PC5 PC6
## Standard deviation 30.2090 29.5846 25.9794 23.5550 20.9828 8.217e-14
## Proportion of Variance 0.2639 0.2531 0.1952 0.1605 0.1273 0.000e+00
## Cumulative Proportion 0.2639 0.5170 0.7122 0.8727 1.0000 1.000e+00
ggplot(pca_df, aes(x = PC1, y = PC2, color = regime)) +
geom_point() +
geom_text(aes(label = name), position = position_nudge(y = -2), show.legend = F, size = 3) +
scale_color_manual(values = colors_default) +
scale_x_continuous(expand = c(0.2, 0))

Correlation heatmap
pheatmap(
cor(rld$matrix),
annotation_col = as.data.frame(colData(dds)) %>% select(regime),
color = brewer.pal(8, 'YlOrRd')
)

Wald test results
# DE analysis using Wald test
dds_full <- DESeq(dds)
colData(dds_full)
## DataFrame with 6 rows and 4 columns
## experimental_class_type regime treatment sizeFactor
## <factor> <factor> <character> <numeric>
## SRR13535276 A in space without gravity without nanoceria 0.655124462757715
## SRR13535278 A in space without gravity without nanoceria 0.947372071793416
## SRR13535280 A in space without gravity without nanoceria 0.758311747504551
## SRR13535288 C in space with gravity without nanoceria 1.97083546265766
## SRR13535290 C in space with gravity without nanoceria 1.3551892091251
## SRR13535292 C in space with gravity without nanoceria 0.816510667410872
# Wald test results
res <- results(
dds_full,
contrast = c('experimental_class_type', condition, control),
alpha = pval_cutoff
)
res
## log2 fold change (MLE): experimental_class_type A vs C
## Wald test p-value: experimental class type A vs C
## DataFrame with 14329 rows and 6 columns
## baseMean log2FoldChange lfcSE stat pvalue padj
## <numeric> <numeric> <numeric> <numeric> <numeric> <numeric>
## ENSMUSG00000098104 5.24444581030292 1.17310310044489 0.99161120801225 1.18302727012984 0.236798339919473 NA
## ENSMUSG00000103922 2.61017447712805 -0.262965829778693 1.94930511845915 -0.134902344065334 0.892689086198627 NA
## ENSMUSG00000033845 204.963079810103 -0.425955616317278 0.540700687642199 -0.787784491591305 0.43082277388837 0.888928485711851
## ENSMUSG00000102275 2.43630286136714 0.448020511939775 1.37647578124654 0.325483759353939 0.744814972221045 NA
## ENSMUSG00000025903 181.46057519749 -0.122731099975621 0.30394086592478 -0.403799270631791 0.686360332881593 0.950153954273961
## ... ... ... ... ... ... ...
## ENSMUSG00000095562 36.9783905023854 -0.883957358210941 0.772000682401585 -1.14502147259906 0.252200262623108 0.812807927072618
## ENSMUSG00000051412 1676.56103290161 -1.36926742493018 0.628477989779351 -2.17870386425292 0.0293536745152883 0.464579200800198
## ENSMUSG00000061654 108.533107600463 -5.77440159164299 3.75625768684938 -1.53727514804406 NA NA
## ENSMUSG00000079834 72.0047621900369 -0.178751211659013 0.513245105648271 -0.348276505108091 0.727632536848299 0.955392432750922
## ENSMUSG00000096768 502.25469835147 -0.493170094984267 0.603046221474518 -0.817798167739796 0.413472444474608 0.884870660079974
mcols(res)
## DataFrame with 6 rows and 2 columns
## type description
## <character> <character>
## baseMean intermediate mean of normalized counts for all samples
## log2FoldChange results log2 fold change (MLE): experimental_class_type A vs C
## lfcSE results standard error: experimental class type A vs C
## stat results Wald statistic: experimental class type A vs C
## pvalue results Wald test p-value: experimental class type A vs C
## padj results BH adjusted p-values
summary(res)
##
## out of 14329 with nonzero total read count
## adjusted p-value < 0.05
## LFC > 0 (up) : 10, 0.07%
## LFC < 0 (down) : 66, 0.46%
## outliers [1] : 177, 1.2%
## low counts [2] : 3046, 21%
## (mean count < 8)
## [1] see 'cooksCutoff' argument of ?results
## [2] see 'independentFiltering' argument of ?results
Summary details
# Upregulated genes (LFC > 0)
res_sig_df %>% filter(log2FoldChange > 0)
# Downregulated genes (LFC < 0)
res_sig_df %>% filter(log2FoldChange < 0)
# Outliers (pvalue and padj are NA)
res[which(is.na(res$pvalue)), ]
## log2 fold change (MLE): experimental_class_type A vs C
## Wald test p-value: experimental class type A vs C
## DataFrame with 177 rows and 6 columns
## baseMean log2FoldChange lfcSE stat pvalue padj
## <numeric> <numeric> <numeric> <numeric> <numeric> <numeric>
## ENSMUSG00000103509 10.8320099261287 -4.6106683978262 2.49239405132351 -1.84989544304916 NA NA
## ENSMUSG00000041809 11.1968752418153 -2.92678950979931 1.7841525533593 -1.64043680249684 NA NA
## ENSMUSG00000079554 43.7763761754213 -6.10966440463779 1.90349482789854 -3.20970896011462 NA NA
## ENSMUSG00000026196 34.2031624970745 -1.53543416576899 1.20266284455742 -1.27669543689448 NA NA
## ENSMUSG00000104396 8.97783614623181 -6.2475045913834 3.34098463499474 -1.86995909108491 NA NA
## ... ... ... ... ... ... ...
## ENSMUSG00000073177 40.9145855445003 -3.88072837034042 1.43752644482295 -2.69958746450636 NA NA
## ENSMUSG00000035395 35.9461613384229 -5.03785580430202 1.7606172573245 -2.86141453137733 NA NA
## ENSMUSG00000079481 19.5767200709396 -6.39760640536655 2.32018359903316 -2.75737075636277 NA NA
## ENSMUSG00000046873 260.500379322282 -2.14693079392589 1.07524812036326 -1.99668407065019 NA NA
## ENSMUSG00000061654 108.533107600463 -5.77440159164299 3.75625768684938 -1.53727514804406 NA NA
# Low counts (only padj is NA)
res[which(is.na(res$padj) & !is.na(res$pvalue)), ]
## log2 fold change (MLE): experimental_class_type A vs C
## Wald test p-value: experimental class type A vs C
## DataFrame with 3046 rows and 6 columns
## baseMean log2FoldChange lfcSE stat pvalue padj
## <numeric> <numeric> <numeric> <numeric> <numeric> <numeric>
## ENSMUSG00000098104 5.24444581030292 1.17310310044489 0.99161120801225 1.18302727012984 0.236798339919473 NA
## ENSMUSG00000103922 2.61017447712805 -0.262965829778693 1.94930511845915 -0.134902344065334 0.892689086198627 NA
## ENSMUSG00000102275 2.43630286136714 0.448020511939775 1.37647578124654 0.325483759353939 0.744814972221045 NA
## ENSMUSG00000103280 3.46040355525309 -0.850530187587735 1.16229241419043 -0.731769541987549 0.464309242409218 NA
## ENSMUSG00000033740 3.03360583277327 -2.19014969005346 2.4850286394917 -0.881337806433266 0.378135009073659 NA
## ... ... ... ... ... ... ...
## ENSMUSG00000040621 6.28953907543633 0.0633648090125568 1.3240105506182 0.0478582357089004 0.961829224302176 NA
## ENSMUSG00000084806 7.30961844503024 3.79189624215575 2.11843093652276 1.78995509213052 0.0734611310865159 NA
## ENSMUSG00000087340 4.3175028293349 0.551668298972368 1.09951114421165 0.501739615716141 0.615850693884982 NA
## ENSMUSG00000087201 1.56303777668801 -1.69962503408446 2.1091434019372 -0.805836640848313 0.420337047918611 NA
## ENSMUSG00000081137 4.37426703475702 1.86267604059602 1.29653834674807 1.43665325847702 0.150816542447861 NA
Shrunken LFC results
plotMA(res)

# Shrunken LFC results
res_shrunken <- lfcShrink(
dds_full,
coef = str_c('experimental_class_type_', condition, '_vs_', control),
type = 'apeglm'
)
res_shrunken
## log2 fold change (MAP): experimental class type A vs C
## Wald test p-value: experimental class type A vs C
## DataFrame with 14329 rows and 5 columns
## baseMean log2FoldChange lfcSE pvalue padj
## <numeric> <numeric> <numeric> <numeric> <numeric>
## ENSMUSG00000098104 5.24444581030292 0.0448141693689787 0.200299850095257 0.236798339919473 0.805027902477568
## ENSMUSG00000103922 2.61017447712805 -0.00262460452712968 0.19554373304714 0.892689086198627 NA
## ENSMUSG00000033845 204.963079810103 -0.0506730884828057 0.193102615216373 0.43082277388837 0.887378739739492
## ENSMUSG00000102275 2.43630286136714 0.00905612587050704 0.194852715878374 0.744814972221045 NA
## ENSMUSG00000025903 181.46057519749 -0.0364684831993053 0.168037946148257 0.686360332881593 0.950764857045811
## ... ... ... ... ... ...
## ENSMUSG00000095562 36.9783905023854 -0.0542471544327936 0.2012798327596 0.252200262623108 0.810642401791627
## ENSMUSG00000051412 1676.56103290161 -0.142444016116182 0.266264884008146 0.0293536745152883 0.477828866641049
## ENSMUSG00000061654 108.533107600463 -0.00772222427744714 0.196727218109609 NA NA
## ENSMUSG00000079834 72.0047621900369 -0.0226788682876471 0.185198195188605 0.727632536848299 0.955648026932455
## ENSMUSG00000096768 502.25469835147 -0.0479803435282482 0.194708125556535 0.413472444474608 0.881888024109551
plotMA(res_shrunken)

mcols(res_shrunken)
## DataFrame with 5 rows and 2 columns
## type description
## <character> <character>
## baseMean intermediate mean of normalized counts for all samples
## log2FoldChange results log2 fold change (MAP): experimental class type A vs C
## lfcSE results posterior SD: experimental class type A vs C
## pvalue results Wald test p-value: experimental class type A vs C
## padj results BH adjusted p-values
summary(res_shrunken, alpha = pval_cutoff)
##
## out of 14329 with nonzero total read count
## adjusted p-value < 0.05
## LFC > 0 (up) : 10, 0.07%
## LFC < 0 (down) : 64, 0.45%
## outliers [1] : 177, 1.2%
## low counts [2] : 2223, 16%
## (mean count < 5)
## [1] see 'cooksCutoff' argument of ?results
## [2] see 'independentFiltering' argument of ?results
Summary details
# Upregulated genes (LFC > 0)
res_shrunken_sig_df %>% filter(log2FoldChange > 0)
# Downregulated genes (LFC < 0)
res_shrunken_sig_df %>% filter(log2FoldChange < 0)
# Outliers (pvalue and padj are NA)
res_shrunken[which(is.na(res_shrunken$pvalue)), ]
## log2 fold change (MAP): experimental class type A vs C
## Wald test p-value: experimental class type A vs C
## DataFrame with 177 rows and 5 columns
## baseMean log2FoldChange lfcSE pvalue padj
## <numeric> <numeric> <numeric> <numeric> <numeric>
## ENSMUSG00000103509 10.8320099261287 -0.0194228874265493 0.197813240254669 NA NA
## ENSMUSG00000041809 11.1968752418153 -0.0291618533199038 0.199152920134047 NA NA
## ENSMUSG00000079554 43.7763761754213 -0.0374488025156393 0.201811531009124 NA NA
## ENSMUSG00000026196 34.2031624970745 -0.0377389335060725 0.199777991831777 NA NA
## ENSMUSG00000104396 8.97783614623181 -0.0112216377679827 0.196985595715653 NA NA
## ... ... ... ... ... ...
## ENSMUSG00000073177 40.9145855445003 -0.05177539336895 0.206318527052347 NA NA
## ENSMUSG00000035395 35.9461613384229 -0.0392465304365335 0.202237525894585 NA NA
## ENSMUSG00000079481 19.5767200709396 -0.0270943641052452 0.199259134010975 NA NA
## ENSMUSG00000046873 260.500379322282 -0.0627339496035779 0.209468921385207 NA NA
## ENSMUSG00000061654 108.533107600463 -0.00772222427744714 0.196727218109609 NA NA
# Low counts (only padj is NA)
res_shrunken[which(is.na(res_shrunken$padj) & !is.na(res_shrunken$pvalue)), ]
## log2 fold change (MAP): experimental class type A vs C
## Wald test p-value: experimental class type A vs C
## DataFrame with 2223 rows and 5 columns
## baseMean log2FoldChange lfcSE pvalue padj
## <numeric> <numeric> <numeric> <numeric> <numeric>
## ENSMUSG00000103922 2.61017447712805 -0.00262460452712968 0.19554373304714 0.892689086198627 NA
## ENSMUSG00000102275 2.43630286136714 0.00905612587050704 0.194852715878374 0.744814972221045 NA
## ENSMUSG00000103280 3.46040355525309 -0.0240957614339984 0.195864224906374 0.464309242409218 NA
## ENSMUSG00000033740 3.03360583277327 -0.0124259725941821 0.196669746909643 0.378135009073659 NA
## ENSMUSG00000103629 4.18123106585651 -0.0183069954616375 0.197179218379926 0.266961831496182 NA
## ... ... ... ... ... ...
## ENSMUSG00000015405 1.78268883970631 -0.00802874443841595 0.19660563158546 0.40979353300801 NA
## ENSMUSG00000047757 2.27039344041303 0.0051114625538439 0.195237585516331 0.827972976924454 NA
## ENSMUSG00000087340 4.3175028293349 0.0171580093375075 0.194569701047645 0.615850693884982 NA
## ENSMUSG00000087201 1.56303777668801 -0.0149244619167915 0.196555580635831 0.420337047918611 NA
## ENSMUSG00000081137 4.37426703475702 0.0416171003235631 0.201108854469204 0.150816542447861 NA
Visualizing results
Heatmaps
# Plot normalized counts (z-scores)
pheatmap(counts_sig_norm[2:7],
color = brewer.pal(8, 'YlOrRd'),
cluster_rows = T,
show_rownames = F,
annotation_col = as.data.frame(colData(dds)) %>% select(regime),
border_color = NA,
fontsize = 10,
scale = 'row',
fontsize_row = 10,
height = 20)

# Plot log-transformed counts
pheatmap(counts_sig_log[2:7],
color = rev(brewer.pal(8, 'RdYlBu')),
cluster_rows = T,
show_rownames = F,
annotation_col = as.data.frame(colData(dds)) %>% select(regime),
border_color = NA,
fontsize = 10,
fontsize_row = 10,
height = 20)

# Plot log-transformed counts (top 24 DE genes)
pheatmap((counts_sig_log %>% filter(ensembl_gene_id %in% res_sig_df$ensembl_gene_id[1:24]))[2:7],
color = rev(brewer.pal(8, 'RdYlBu')),
cluster_rows = T,
show_rownames = F,
annotation_col = as.data.frame(colData(dds)) %>% select(regime),
fontsize = 10,
fontsize_row = 10,
height = 20)

Volcano plots
# Unshrunken LFC
res_df %>%
mutate(
sig_threshold = if_else(
padj < pval_cutoff & abs(log2FoldChange) >= lfc_cutoff,
if_else(log2FoldChange > 0, 'DE-up', 'DE-down'),
'non-DE'
)
) %>%
filter(!is.na(sig_threshold)) %>%
ggplot() +
geom_point(aes(x = log2FoldChange, y = -log10(padj), colour = sig_threshold)) +
scale_color_manual(values = c('blue', 'red', 'gray')) +
xlab('log2 fold change') +
ylab('-log10 adjusted p-value')

# Shrunken LFC
res_shrunken_df %>%
mutate(
sig_threshold = if_else(
padj < pval_cutoff & abs(log2FoldChange) >= lfc_cutoff,
if_else(log2FoldChange > 0, 'DE-up', 'DE-down'),
'non-DE'
)
) %>%
filter(!is.na(sig_threshold)) %>%
ggplot() +
geom_point(aes(x = log2FoldChange, y = -log10(padj), colour = sig_threshold)) +
scale_color_manual(values = c('blue', 'red', 'gray')) +
xlab('log2 fold change') +
ylab('-log10 adjusted p-value')

GSEA (all)
Hallmark genesets
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_h) %>% plot_enrichment_table(rank_lfc, mm_h)

# Wald stat
get_fgsea_res(rank_stat, mm_h) %>% plot_enrichment_table(rank_stat, mm_h)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_h) %>% plot_enrichment_table(rank_pval, mm_h)

GO biological process
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_bp) %>% plot_enrichment_table(rank_lfc, mm_c5_bp)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_bp) %>% plot_enrichment_table(rank_stat, mm_c5_bp)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_bp) %>% plot_enrichment_table(rank_pval, mm_c5_bp)

GO cellular component
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_cc) %>% plot_enrichment_table(rank_lfc, mm_c5_cc)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_cc) %>% plot_enrichment_table(rank_stat, mm_c5_cc)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_cc) %>% plot_enrichment_table(rank_pval, mm_c5_cc)

GO molecular function
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_mf) %>% plot_enrichment_table(rank_lfc, mm_c5_mf)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_mf) %>% plot_enrichment_table(rank_stat, mm_c5_mf)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_mf) %>% plot_enrichment_table(rank_pval, mm_c5_mf)

GSEA (DE)
Hallmark genesets
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_h) %>% plot_enrichment_table(rank_lfc, mm_h)

# Wald stat
get_fgsea_res(rank_stat, mm_h) %>% plot_enrichment_table(rank_stat, mm_h)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_h) %>% plot_enrichment_table(rank_pval, mm_h)

GO biological process
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_bp) %>% plot_enrichment_table(rank_lfc, mm_c5_bp)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_bp) %>% plot_enrichment_table(rank_stat, mm_c5_bp)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_bp) %>% plot_enrichment_table(rank_pval, mm_c5_bp)

GO cellular component
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_cc) %>% plot_enrichment_table(rank_lfc, mm_c5_cc)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_cc) %>% plot_enrichment_table(rank_stat, mm_c5_cc)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_cc) %>% plot_enrichment_table(rank_pval, mm_c5_cc)

GO molecular function
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_mf) %>% plot_enrichment_table(rank_lfc, mm_c5_mf)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_mf) %>% plot_enrichment_table(rank_stat, mm_c5_mf)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_mf) %>% plot_enrichment_table(rank_pval, mm_c5_mf)

System Info
sessionInfo()
## R version 3.6.3 (2020-02-29)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS Sierra 10.12.6
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRlapack.dylib
##
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
##
## attached base packages:
## [1] grid parallel stats4 stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] VennDiagram_1.6.20 futile.logger_1.4.3 fgsea_1.12.0 Rcpp_1.0.3 RColorBrewer_1.1-2 pheatmap_1.0.12 DESeq2_1.26.0 SummarizedExperiment_1.16.1 DelayedArray_0.12.3 BiocParallel_1.20.1 matrixStats_0.57.0 Biobase_2.46.0 GenomicRanges_1.38.0 GenomeInfoDb_1.22.1 IRanges_2.20.2 S4Vectors_0.24.4 BiocGenerics_0.32.0 scales_1.1.1 forcats_0.4.0 stringr_1.4.0 dplyr_1.0.2 purrr_0.3.3 readr_1.3.1 tidyr_1.0.0 tibble_3.1.0 ggplot2_3.3.3 tidyverse_1.2.1
##
## loaded via a namespace (and not attached):
## [1] colorspace_1.4-1 ellipsis_0.3.0 htmlTable_1.13.3 XVector_0.26.0 base64enc_0.1-3 rstudioapi_0.10 farver_2.1.0 bit64_0.9-7 mvtnorm_1.1-1 apeglm_1.8.0 AnnotationDbi_1.48.0 fansi_0.4.0 lubridate_1.7.4 xml2_1.2.2 splines_3.6.3 geneplotter_1.64.0 knitr_1.25 Formula_1.2-3 jsonlite_1.6 broom_0.7.5 annotate_1.64.0 cluster_2.1.0 png_0.1-7 compiler_3.6.3 httr_1.4.1 backports_1.1.5 assertthat_0.2.1 Matrix_1.2-18 cli_1.1.0 formatR_1.7 acepack_1.4.1 htmltools_0.5.1.1 tools_3.6.3 coda_0.19-3 gtable_0.3.0 glue_1.4.2 GenomeInfoDbData_1.2.2 fastmatch_1.1-0 bbmle_1.0.23.1 cellranger_1.1.0 jquerylib_0.1.3 vctrs_0.3.4 xfun_0.22 rvest_0.3.5 lifecycle_0.2.0 XML_3.99-0.3 MASS_7.3-51.5 zlibbioc_1.32.0 hms_0.5.2 lambda.r_1.2.4 yaml_2.2.0 memoise_1.1.0 gridExtra_2.3 emdbook_1.3.12 sass_0.3.1 bdsmatrix_1.3-4 rpart_4.1-15 latticeExtra_0.6-29 stringi_1.4.3 RSQLite_2.2.1 genefilter_1.68.0 checkmate_1.9.4 rlang_0.4.8 pkgconfig_2.0.3 bitops_1.0-6 evaluate_0.14 lattice_0.20-38 labeling_0.3 htmlwidgets_1.5.1 bit_1.1-15.1 tidyselect_1.1.0 plyr_1.8.4 magrittr_1.5 R6_2.4.0 generics_0.0.2 Hmisc_4.3-0 DBI_1.1.0 pillar_1.5.1 haven_2.2.0 foreign_0.8-75 withr_2.1.2 survival_3.1-8 RCurl_1.95-4.12 nnet_7.3-12 modelr_0.1.5 crayon_1.3.4 futile.options_1.0.1 utf8_1.1.4 rmarkdown_2.7 jpeg_0.1-8.1 locfit_1.5-9.4 readxl_1.3.1 data.table_1.13.6 blob_1.2.1 digest_0.6.27 xtable_1.8-4 numDeriv_2016.8-1.1 munsell_0.5.0 bslib_0.2.4